前情提要: 在前一天的部分我們備份好user資料庫數據,和準備資料的動作 <<
那就直接進入主題->還原步驟
mysql> SET sql_log_bin=0;
mysql> use user
mysql> source /mnt/mysql_data/mysql/user_backup_20210817.sql
root@mysql-master-1:/mnt/mysql_data/mysql# mysqlbinlog -vv mysql-bin.000013 | cat -n | grep -iw 'delete'
root@mysql-master-1:/mnt/mysql_data/mysql# mysqlbinlog -vv mysql-bin.000014 | cat -n | grep -iw 'delete'
78 ### DELETE FROM `user`.`user_powers`
84 ### DELETE FROM `user`.`user_powers`
90 ### DELETE FROM `user`.`user_powers`
96 ### DELETE FROM `user`.`user_powers`
102 ### DELETE FROM `user`.`user_powers`
root@mysql-master-1:/mnt/mysql_data/mysql# mysqlbinlog -vv mysql-bin.000014 | cat -n | sed -n '55,120p';
4.導入binlog復原後續操作紀錄
恢復範圍:
mysql-bin.000013: 還記得我們在備份時有刷新log 產生新紀錄檔mysql-bin.000013 所以內容直接全部恢復。
mysql-bin.000014: 紀錄範圍則到(# at 467)執行刪除資料前的位置(參考上圖)。
如果在備份時沒有刷新log,等於後續紀錄包含在某個binlog中。這時候要從哪邊開始恢復就是看備份時紀錄的POS位置等於要設定 ex. --start-position=154
使用注意: 在前面備份還原時我們針對單一DB做數據庫還原,不會動到其他DB數據。透過binlog還原後續資料時如果沒指定單一庫 --database=user,執行到一些其他DB的異動像已經刪除的或是插入值異動是會噴錯的!!
=binlog紀錄是包含所有DB操作內容的=
root@mysql-master-1:/mnt/mysql_data/mysql# mysqlbinlog --stop-position=467 mysql-bin.000013 mysql-bin.000014 --database=user --skip-gtids | mysql -uroot -p1234
成功回到誤刪資料前的狀態
mysql> select * from user_powers;
+----------+-----------+----------+---------------------+
| user_id | nick_name | group_id | updated_at |
+----------+-----------+----------+---------------------+
| 1021211 | ken | 119201 | 2021-08-10 08:33:56 |
| 1232123 | siangx | 19200 | 2021-08-17 02:08:05 |
| 18675543 | kitty | 19200 | 2021-08-10 08:33:51 |
| 23122141 | kiki | 1242000 | 2021-08-12 09:01:54 |
| 24122441 | snow | 119201 | 2021-08-10 08:33:51 |
| 38921112 | shawn | 19200 | 2021-08-12 10:33:51 |
| 4356231 | lisa | 19200 | 2021-08-10 08:33:56 |
| 64121211 | kevin | 389110 | 2021-08-10 08:33:51 |
| 72197123 | eric | 19200 | 2021-08-15 01:33:51 |
| 7622441 | ben | 213123 | 2021-08-10 08:33:56 |
| 91311233 | alex | 389110 | 2021-08-10 08:33:56 |
| 91675543 | kay | 123321 | 2021-08-10 08:33:56 |
| 98112111 | leo | 19201 | 2021-08-13 12:33:56 |
| 98212321 | sara | 119201 | 2021-08-10 08:33:51 |
+----------+-----------+----------+---------------------+
14 rows in set (0.00 sec)
明天來介紹一下對於日誌不斷增長好用的日誌切割管理工具~